import { fileURLToPath, URL } from 'node:url'
import path from 'path'
import { defineConfig,loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
// import Icons from 'unplugin-icons/vite'
// import IconsResolver from 'unplugin-icons/resolver'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'

const baseUrl = 'https://v-v-r-test.b.com'
// import UnoCSS from 'unocss/vite'
// import { presetIcons } from 'unocss'
// https://vitejs.dev/config/
export default defineConfig(({ command,mode }) => {
  //获取各种环境下的对应的环境变量   
  //process.cwd()获取根目录
  let env = loadEnv(mode,process.cwd())
  return {
    plugins: [
      vue(),
      vueJsx(),
      AutoImport({
        // Auto import functions from Vue, e.g. ref, reactive, toRef...
        // 自动导入 Vue 相关函数，如：ref, reactive, toRef 等
        imports: ['vue'],

        // Auto import functions from Element Plus, e.g. ElMessage, ElMessageBox... (with style)
        // 自动导入 Element Plus 相关函数，如：ElMessage, ElMessageBox... (带样式)
        resolvers: [
          ElementPlusResolver(),
          // Auto import icon components
          // 自动导入图标组件
          // IconsResolver({
          //   prefix: 'i',
          //   enabledCollections: ['ep']
          // })
        ]
        // 配置文件生成位置(false:关闭自动生成)
        // dts: false,
      }),
      Components({
        resolvers: [
          // Auto register icon components
          // 自动注册图标组件
          // IconsResolver({
          //   prefix: 'i',
          //   enabledCollections: ['ep']
          // }),
          // Auto register Element Plus components
          // 自动导入 Element Plus 组件
          ElementPlusResolver()
        ]
        // 配置文件生成位置(false:关闭自动生成)
        // dts: false,
      }),
      // Icons({
      //   autoInstall: true
      // }),
      createSvgIconsPlugin({
        // 指定要缓存的文件夹
        iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
        // 指定symbolId格式
        symbolId: 'icon-[dir]-[name]'
      }),
      // 配置UnoCSS，使其可以直接使用标签 <i-ep-edit /> | <el-button icon="i-ep-edit" > edit </el-button>
      // UnoCSS({})
      // UnoCSS({
      //   presets: [
      //     presetIcons({
      //       scale: 1.2,
      //       warn: true
      //     })
      //   ],
      //   // 以下配置是为了可以直接使用标签 <i-ep-Edit /> | <el-button icon="i-ep-Edit" > edit </el-button>
      //   variants: [
      //     {
      //       match: (s) => {
            
      //         if (s.startsWith('i-')) {
      //           return {
      //             matcher: s,
      //             selector: (s) => {
      //               return s.startsWith('.') ? `${s.slice(1)},${s}` : s
      //             }
      //           }
      //         }
      //       }
      //     }
      //   ]
      // })
    ],
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      }
    },
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: `@import "@/assets/css/variable.scss";`
        }
      }
    },
    server: {
      host: 'localhost',
      open: false,
      disableHostCheck: true,
      overlay: {
        warnings: false,
        errors: true
      },
      proxy: {
        [env.VITE_APP_BASE_API]:{
          target: env.VITE_APP_BASE_API,
          changeOrigin: true,
          rewrite:(path)=>path.replace(/^\/api/,'') 
        },
        '/cms-report': {
          target: baseUrl,
          secure: false,
          ws: false,
          changeOrigin: true
        },
        '/cms-report-mgr': {
          target: baseUrl,
          secure: false,
          ws: false,
          changeOrigin: true
        },
        '/cms-report-admin': {
          target: baseUrl,
          secure: false,
          ws: false,
          changeOrigin: true
        }
      }
    },
  }
})
